//
//  YJWWordViewController.m
//  百思不得骑姐
//
//  Created by YJW on 16/11/27.
//  Copyright © 2016年 yijiang. All rights reserved.
//

#import "YJWWordViewController.h"
#import <AFNetworking.h>
#import <SVProgressHUD.h>
#import <UIImageView+WebCache.h>
#import <MJRefresh.h>
#import <MJExtension.h>

#import "YJWWordModel.h"
#import "YJWWordCell.h"

@interface YJWWordViewController ()

/** 段子数据源   */
@property(nonatomic,strong) NSMutableArray *topics;
/** 页码   */
@property(nonatomic,assign) NSInteger page;
/** 加载下一页是需要的参数 maxtime   */
@property(nonatomic,strong) NSString *maxtime;

@end

@implementation YJWWordViewController

//懒加载
-(NSMutableArray *)topics
{
    if(!_topics){
        _topics = [NSMutableArray array];
    }
    return _topics;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //添加刷新控件
    [self addRefresh];
    
    //初始化 tableView
    [self setUpTableView];
}


/**
 初始化 tableView
 */
-(void)setUpTableView
{
    //设置内边距
    CGFloat top = YJWTitlesViewH + YJWTitlesViewY;
    CGFloat bottom = self.tabBarController.tabBar.height;
    self.tableView.contentInset = UIEdgeInsetsMake(top, 0, bottom, 0);
    self.tableView.backgroundColor = [UIColor clearColor];
    self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
    //设置导航条的内边距
    self.tableView.scrollIndicatorInsets = self.tableView.contentInset;
    
    //注册 cell
    [self.tableView registerNib:[UINib nibWithNibName:NSStringFromClass([YJWWordCell class]) bundle:nil] forCellReuseIdentifier:@"word"];
}

/**
 添加刷新控件
 */
-(void)addRefresh
{
    //第一次点击标题时，先显示顶部下拉刷新控件，然后再加载数据
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(loadData)];
    [self.tableView.mj_header beginRefreshing];
    //设置下拉刷新控件透明度为自动
    self.tableView.mj_header.automaticallyChangeAlpha = YES;
    
    //底部上拉刷新控件
    self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(loadMoreData)];
}

/*问题：如果用户进行下拉之后立刻又进行上拉，会出现页码错误：0  5；或者下拉之后进行上拉
  暂时解决方案①：在进行上拉时候先停止下拉、在进行下拉时候先停止上拉
  暂时解决方案②：利用 param 记录上一次的params，加载数据时再进行比较，如果相同就进行加载，如果不相同就取消加载，如 YJWRecommendViewController 中的实现
*/

/**
 下拉加载数据，首次点击标题栏和下拉刷新时调用，都是加载第一页数据
 */
-(void)loadData
{
    //下拉刷新时候先停止上拉刷新
    [self.tableView.mj_footer endRefreshing];
    
    //设置参数
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"a"] = @"list";
    params[@"c"] = @"data";
    params[@"type"] = @"29";
    
    //发送请求
    [[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params  progress:nil success:^(NSURLSessionDataTask * _Nonnull task, NSDictionary * _Nullable responseObject) {
        
//        [responseObject writeToFile:@"/Users/macbookpro/Desktop/duanzi.plist" atomically:YES];
        
        //字典转模型
        self.topics = [YJWWordModel mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
        //记录第一页的 maxtime
        self.maxtime = responseObject[@"info"][@"maxtime"];
        
        [self.tableView reloadData];
        
        //将 page 置零，清空之前的页面
        self.page = 0;
        
        //加载完数据结束刷新
        [self.tableView.mj_header endRefreshing];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        [SVProgressHUD showErrorWithStatus:@"数据加载失败"];
        //加载失败时也要结束刷新
        [self.tableView.mj_header endRefreshing];
    }];
}


/**
 加载更多数据
 */
-(void)loadMoreData
{
    //停止上拉刷新
    [self.tableView.mj_header endRefreshing];
    
    //每次上拉，页码都加 1
    self.page ++;
    //设置参数
    NSMutableDictionary *params = [NSMutableDictionary dictionary];
    params[@"a"] = @"list";
    params[@"c"] = @"data";
    params[@"maxtime"] = self.maxtime;
    params[@"page"] = @(self.page);
    
    //发送请求
    [[AFHTTPSessionManager manager] GET:@"http://api.budejie.com/api/api_open.php" parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        
        //加载新数据，并将新数据添加到 topics
        NSMutableArray *newTopics = [YJWWordModel mj_objectArrayWithKeyValuesArray:responseObject[@"list"]];
        [self.topics addObjectsFromArray:newTopics];
        //给 maxtime 重新赋值
        self.maxtime = responseObject[@"info"][@"maxtime"];
        
        [self.tableView reloadData];
        
        //结束刷新
        [self.tableView.mj_footer endRefreshing];
    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
        //结束刷新
        [self.tableView.mj_footer endRefreshing];
        //加载失败时，让页面回滚到上一页
        self.page--;
    }];
}

#pragma mark - <UITableViewDataSource>
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    self.tableView.mj_footer.hidden = (self.topics.count == 0);
    return self.topics.count;
}

// cell 高度
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return 200;
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    YJWWordCell *cell = [tableView dequeueReusableCellWithIdentifier:@"word"];
    
    cell.model = self.topics[indexPath.row];
    
    
//    YJWWordModel *model = self.topics[indexPath.row];
//    cell.textLabel.text = model.name;
//    cell.detailTextLabel.text = model.text;
//    [cell.imageView sd_setImageWithURL:[NSURL URLWithString:model.profile_image] placeholderImage:[UIImage imageNamed:@"defaultUserIcon"]];

    return cell;
}

@end
